Міністерство освіти і науки, молоді та спорту України
Національний університет «Львівська політехніка»
Кафедра АСУ
Лабораторна робота №5
з дисципліни: «Управління ІТ-проектами»
на тему: «Інструменти аналізу коду програмного забезпечення»
Мета роботи: навчитися аналізувати код програмного забезпечення на відповідність рекоментаціям по проектуванні бібліотек; ознайомитися з інструментами для динамічного і статичного аналізу коду.
ЗАВДАННЯ ДО ЛАБОРАТОРНОЇ РОБОТИ
- Розробити документ CodeConvention для аплікації і привести код до даного стандарту.
- Вивчити і застосувати одну з утиліт для статичного аналізу коду (Fxcop, ReSharper, Blastі ін.).
- Вивчити і застосувати одну з утиліт для динамічного аналізу коду (Valgrind, Dmalloc, Dynlnst і ін.).
Зміст
1. CodeConvention
2. Статичний аналіз (для С++ коду)
2.1. Утиліта Cppcheck
3. Динамічний аналіз
3.1. Утиліта Valgrind
1. CodeConvention
Стандарт оформлення коду (coding convention) - набір правил і угод, використовуваних при написанні вихідного коду на деякій мові програмування. Наявність загального стилю програмування полегшує розуміння і підтримку вихідного коду, написаного більш ніж одним програмістом, а також спрощує взаємодію кількох людей при розробці програмного забезпечення.
Стандарт оформлення коду зазвичай приймається і використовується деякою групою розробників програмного забезпечення для однакового оформлення спільно використовуваного коду. Метою прийняття і використання стандарту є спрощення сприйняття програмного коду людиною, мінімізація навантаження на пам'ять і зір при читанні програми.
1) Ім’я файлу має говорити про те, що саме це за файл. Тобто імена файлів мають бути
такими, щоб по них було чітко зрозуміло, що у тих файлах. Наприклад ім’я
email_addresses.txt дозволяє зрозуміти, що у файлі розміщено адреси електронної
пошти.
2) Імена змінних також повинні бути такими, що пояснюють їх призначення
(trainer).
3) Структури повинні відкриватися і закриватися на одному рівні (після та перед
фігурними дужками робимо пробіли):
Викоритстовуємо цей варіант:
if (запис)
{
код всередині;
}
else
{
код всередині;
код інших структур;
}
4) Для називання функцій застосовуємо так звану “верблюдячу нотацію”. Це
коли кожне слово, окрім першого, у імені функції пишеться з великої букви:
openMyFile();
5) На початку кожного файлу та перед функцією пишемо коментарі у такому
форматі:
/**
*якийсь коментар
*/
6) Рекомендується ставити // перед або після коду, що коментуєте.
// якийсь коментар
7) Усі реалізації функцій повинні знаходитися у файлах вихідного коду:
class MyClass
{
public:
int getValue () {return value_;} // Не можна!
...
private:
int value_;
}
Заголовки оголошують інтерфейс, файли вихідного коду його реалізовують. Якщо програмісту необхідно знайти реалізацію, він повинен бути впевнений, що знайде її саме у файлі вихідного коду.
8) Класи завжди називаються з великої букви.
9) Завжди використовуємо пробіли (перед і після оператора) при оформленні логічних і арифметичних виразів.
10) Використовуємо 4 пробіли на один рівень відступу. Не використовуємо табуляції.
11) Змінні, класи, функції називаємо тільки «горбатим регістром» (int someDataHere;)
12) Іменовані константи (включно зі значеннями перерахувань) повинні бути записані у верхньому регістрі з нижнім підкресленням як роздільник.
MAX_ITERATIONS, COLOR_RED
2. Статичний аналіз (для C++ коду)
Статичний аналіз коду - аналіз програмного забезпечення, зроблений (на відміну від динамічного аналізу) без реального виконання досліджуваних програм. У більшості випадків аналіз проводитьсянад якою-небудь версією вихідного коду, хоча іноді аналізу піддається якій небудь вид об'єктного коду, наприклад P-код або код на MSIL. Термін зазвичай застосовують до аналізу, виробленому спеціальним програмним забезпеченням.
Cppcheck - це інструмент статичного аналізу вихідного коду на мові Сі і Сі ++. Відмінними рисами інструменту є: відкритість, безкоштовність, кросплатформенність, простота використання.
Cppcheck версі...